package com.tsintergy.tmosguide.casemng.serviceapi.base.pojo;

import javax.persistence.*;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
import io.swagger.annotations.*;
import com.tsieframework.core.base.dao.BaseDO;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Columns;
import org.hibernate.annotations.Type;
import com.tsieframework.core.base.domain.period.DataPointListMetaDO;
import com.tsieframework.core.base.dao.type.DataPointListMeta;
import com.tsieframework.core.base.dao.type.TsieCustomType;


/**
 * 抽象实体模型定义
 * @auther: longyz@tsintergy.com
 * @date: 2025/7/13
 */
@Entity
@Table(name="CMG_BASE_CASE_INFO")
@ApiModel(description = "案例基本信息")
public class CmgBaseCaseInfoDO implements BaseDO, DataPointListMetaDO{
    /** CASE_ID */
    private String caseId ;
    /** 案例名称 */
    private String caseName ;
    /** 交易日期 */
    private Date tradeDate ;
    /** 创建时间 */
    private Date createTime ;
    /** 更新时间 */
    private Date updateTime ;
    /** 创建人编号 */
    private String createUserId ;
    /** 创建人名称 */
    private String createUserName ;
    /** 开始时间;与T_START_TIME做冗余，方便查询 */
    private Date startTime ;
    /** 结束时间 */
    private Date endTime ;
    /** 数据点配置 */
    private DataPointListMeta tvMeta ;
    /** 交易状态;由交易服务决定，存数值，例如：已创建、数据载入中、数据载入完成、计算中、计算完成、已发布、审核通过、审核不通过、审核中 */
    private Integer tradeStatus ;
    /** 电网市场模型版本号;电网市场模型版本号 */
    private Long marketModelVersion ;

    /** CASE_ID */
    @ApiModelProperty(value = "CASE_ID")
    @Column(name = "CASE_ID")
    @Id
    @GenericGenerator(name = DEFAULT_GENERATOR, strategy = DEFAULT_STRATEGY)
    @GeneratedValue(generator = DEFAULT_GENERATOR)
    public String getCaseId(){
        return this.caseId;
    }

    /** CASE_ID */
    public void setCaseId(String caseId){
        this.caseId = caseId;
    }

    /** 案例名称 */
    @ApiModelProperty(value = "案例名称")
    @Column(name = "CASE_NAME")
    public String getCaseName(){
        return this.caseName;
    }

    /** 案例名称 */
    public void setCaseName(String caseName){
        this.caseName = caseName;
    }

    /** 交易日期 */
    @ApiModelProperty(value = "交易日期")
    @Column(name = "TRADE_DATE")
    public Date getTradeDate(){
        return this.tradeDate;
    }

    /** 交易日期 */
    public void setTradeDate(Date tradeDate){
        this.tradeDate = tradeDate;
    }

    /** 创建时间 */
    @ApiModelProperty(value = "创建时间")
    @Column(name = "CREATE_TIME")
    public Date getCreateTime(){
        return this.createTime;
    }

    /** 创建时间 */
    public void setCreateTime(Date createTime){
        this.createTime = createTime;
    }

    /** 更新时间 */
    @ApiModelProperty(value = "更新时间")
    @Column(name = "UPDATE_TIME")
    public Date getUpdateTime(){
        return this.updateTime;
    }

    /** 更新时间 */
    public void setUpdateTime(Date updateTime){
        this.updateTime = updateTime;
    }

    /** 创建人编号 */
    @ApiModelProperty(value = "创建人编号")
    @Column(name = "CREATE_USER_ID")
    public String getCreateUserId(){
        return this.createUserId;
    }

    /** 创建人编号 */
    public void setCreateUserId(String createUserId){
        this.createUserId = createUserId;
    }

    /** 创建人名称 */
    @ApiModelProperty(value = "创建人名称")
    @Column(name = "CREATE_USER_NAME")
    public String getCreateUserName(){
        return this.createUserName;
    }

    /** 创建人名称 */
    public void setCreateUserName(String createUserName){
        this.createUserName = createUserName;
    }

    /** 开始时间;与T_START_TIME做冗余，方便查询 */
    @ApiModelProperty(value = "开始时间")
    @Column(name = "START_TIME")
    public Date getStartTime(){
        return this.startTime;
    }

    /** 开始时间;与T_START_TIME做冗余，方便查询 */
    public void setStartTime(Date startTime){
        this.startTime = startTime;
    }

    /** 结束时间 */
    @ApiModelProperty(value = "结束时间")
    @Column(name = "END_TIME")
    public Date getEndTime(){
        return this.endTime;
    }

    /** 结束时间 */
    public void setEndTime(Date endTime){
        this.endTime = endTime;
    }

    /** 数据点配置 */
    @ApiModelProperty(value = "数据点配置")
    @Type(type = TsieCustomType.CustomCollectionType.DataPointListMetaType)
    @Columns(columns = {
            @Column(name = "T_START_TIME"),
            @Column(name = "T_SIZE"),
            @Column(name = "T_DELTA"),
            @Column(name = "T_DELTA_UNIT")
    })
    public DataPointListMeta getTvMeta(){
        return this.tvMeta;
    }

    /** 数据点配置 */
    public void setTvMeta(DataPointListMeta tvMeta){
        this.tvMeta = tvMeta;
    }

    /** 交易状态;由交易服务决定，存数值，例如：已创建、数据载入中、数据载入完成、计算中、计算完成、已发布、审核通过、审核不通过、审核中 */
    @ApiModelProperty(value = "交易状态")
    @Column(name = "TRADE_STATUS")
    public Integer getTradeStatus(){
        return this.tradeStatus;
    }

    /** 交易状态;由交易服务决定，存数值，例如：已创建、数据载入中、数据载入完成、计算中、计算完成、已发布、审核通过、审核不通过、审核中 */
    public void setTradeStatus(Integer tradeStatus){
        this.tradeStatus = tradeStatus;
    }

    /** 电网市场模型版本号;电网市场模型版本号 */
    @ApiModelProperty(value = "电网市场模型版本号")
    @Column(name = "MARKET_MODEL_VERSION")
    public Long getMarketModelVersion(){
        return this.marketModelVersion;
    }

    /** 电网市场模型版本号;电网市场模型版本号 */
    public void setMarketModelVersion(Long marketModelVersion){
        this.marketModelVersion = marketModelVersion;
    }

}


